#ifndef CONFIG_HPP
#define CONFIG_HPP

#include <stdio.h>
#include <cstdint>
#include <vector>

// 支持IO的产品ID
#define ECIO_WELL       0x00444543  // Well
#define ECIO_INEXBOT    0x00000025  // Inexbot
#define ECIO_BECKHOFF   0x00000002  // 倍福
#define ECIO_NOWIO	0x00000001

enum EcType
{
    EC_IO = 0,
    EC_WELL_DIGITAL_IO,         // WELL Digital IO Device
    EC_WELL_ANALOG_IO,          // WELL Analog IO Device
    EC_WELL_TP_IO,              // WELL Temperature IO Device
    EC_INEXBOT_IO,              // Inexbot IO
    EC_BECKHOFF_IO,             // BECKHOFF IO Device
    EC_NOWIO,
    EC_SERVO,                   // Servo Device
    EC_OTHER
};

enum EcMode
{
    CSP = 0x08,
    CSV = 0x09
};

typedef std::vector<int> Target;
typedef std::vector<int> Actual;

struct EcStatus
{
    Target target_pos;
    Actual actual_pos;

    Target target_vel;
    Actual actual_vel;

    int8_t state;
};

#define LOG_DEBUG(format, args...) \
        rt_printf("[%s %s][DEBUG][%s %d]" format, __DATE__, __TIME__, __FILE__, __LINE__, ##args)

#define LOG_INFO(format, args...) \
        rt_printf("[%s %s][INFO][%s %d]" format, __DATE__, __TIME__, __FILE__, __LINE__, ##args)

#define LOG_WARN(format, args...) \
        rt_printf("[%s %s][WARN][%s %d]" format, __DATE__, __TIME__, __FILE__, __LINE__, ##args)

#define LOG_ERROR(format, args...) \
        rt_printf("[%s %s][ERROR][%s %d]" format, __DATE__, __TIME__, __FILE__, __LINE__, ##args)


#endif
